﻿namespace Genesis.Infrastructure.Application.Specifications
{

    public interface ISpecification<T>
    {

        bool IsSatisfiedBy(T candidate);

        ISpecification<T> And(ISpecification<T> and);

        ISpecification<T> Or(ISpecification<T> or);

        ISpecification<T> Not();

    }

}